//package com.inspur.edp.cef.generator.coreGenerator.base.serializer.nestedserialize;
//
//import com.inspur.edp.caf.generator.baseInfo.ParameterInfo;
//import com.inspur.edp.caf.generator.baseInfo.TypeInfo;
//import com.inspur.edp.caf.generator.method.ClassMethodGenerator;
//import com.inspur.edp.cef.designtime.api.IGspCommonField;
//import com.inspur.edp.cef.generator.coreGenerator.base.entityGenerator.CefDataTypeImplGeneratorContext;
//import com.inspur.edp.cef.generator.coreGenerator.base.serializer.SerItemGenUtil;
//import com.inspur.edp.cef.generator.overall.GenUtils;
//import com.inspur.edp.udt.api.Manager.serialize.NestedSerializeContext;
//import java.util.ArrayList;
//import java.util.Arrays;
//import org.eclipse.jdt.core.dom.Block;
//import org.eclipse.jdt.core.dom.ClassInstanceCreation;
//import org.eclipse.jdt.core.dom.ExpressionStatement;
//import org.eclipse.jdt.core.dom.MethodInvocation;
//import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
//import org.eclipse.jdt.core.dom.VariableDeclarationStatement;
//
//public class GetSimpleAssoUdtSerializeContextMethodGen extends ClassMethodGenerator {
//
//  private final IGspCommonField field;
//  private CefDataTypeImplGeneratorContext entityGenContext;
//
//  public GetSimpleAssoUdtSerializeContextMethodGen(
//      CefDataTypeImplGeneratorContext entityDataSerGenContext, IGspCommonField field) {
//    this.entityGenContext = entityDataSerGenContext;
//    this.field = field;
//  }
//
//  @Override
//  protected String getMethodName() {
//    return SerItemGenUtil.getEnrichedSerializeContextMethodName(field);
//  }
//
//  @Override
//  protected TypeInfo getReturnType() {
//    return new TypeInfo(NestedSerializeContext.class){{setUseFullName(true);}};
//  }
//
//  @Override
//  protected ArrayList<ModifierKeyword> getAccessModifiers() {
//    return new ArrayList<ModifierKeyword>(
//        Arrays.asList(new ModifierKeyword[]{ModifierKeyword.PRIVATE_KEYWORD}
//        ));
//  }
//
//  @Override
//  protected ArrayList<ParameterInfo> getParameterCollection() {
//    return new ArrayList<ParameterInfo>();
//  }
//
//  @Override
//  protected void beforeInitialize() {
//    super.beforeInitialize();
//    addChildGenerators(new EnrichedAssociationSerializerGenerator(entityGenContext, field));
//  }
//
//  private static final String paraContext = "context";
//
//  /**
//   * // 生成效果 //  private NestedSerializeContext getNestedSerializeContext() { //
//   * NestedSerializeContext context = new NestedSerializeContext(); //
//   * context.setEnableStdTimeFormat(true); //    context.setAssosicationEnrichedSerializer(new
//   * XXX()); //    return context; //  }
//   *
//   * @return
//   */
//  @Override
//  protected Block buildMethodBody() {
//    Block block = ast.newBlock();
//    VariableDeclarationStatement varDeclarationStatement =
//        GenUtils.buildVarDeclarationStatement(ast, NestedSerializeContext.class.getTypeName(), paraContext,
//            GenUtils.buildClassInstantiation(ast, NestedSerializeContext.class.getTypeName()));
//
//    MethodInvocation setEnableStdTimeFormat = GenUtils
//        .getMethodInvocation(ast, ast.newName(paraContext), "setEnableStdTimeFormat");
//    setEnableStdTimeFormat.arguments().add(
//        ast.newBooleanLiteral(this.entityGenContext.coreGenContext.getEnableStdDateTime()));
//    block.statements().add(varDeclarationStatement);
//    block.statements().add(ast.newExpressionStatement(setEnableStdTimeFormat));
//    block.statements().add(buildSetEnrichedAssoSerializer());
//    block.statements().add(GenUtils.buildReturnStatement(ast, paraContext));
//    return block;
//  }
//
//  private ExpressionStatement buildSetEnrichedAssoSerializer() {
//    String enrichedSerializer = EnrichedAssociationSerializerGenerator.getName(field);
//    ClassInstanceCreation classInstanceCreation = ast.newClassInstanceCreation();
//    classInstanceCreation.setType(ast.newSimpleType(ast.newSimpleName(enrichedSerializer)));
//
//    MethodInvocation methodInvocation = ast.newMethodInvocation();
//    methodInvocation.setExpression(ast.newSimpleName(paraContext));
//    methodInvocation.setName(ast.newSimpleName("setAssosicationEnrichedSerializer"));
//    methodInvocation.arguments().add(classInstanceCreation);
//
//    return ast.newExpressionStatement(methodInvocation);
//  }
//}
